package com.ruoyi.foodworks.mapper;

import java.util.List;
import java.util.Map;
import com.ruoyi.foodworks.domain.Works;
import com.ruoyi.foodworks.domain.WorksStatsVO;

/**
 * 作品详情Mapper接口
 * 
 * @author lpt
 * @date 2025-08-12
 */
public interface WorksMapper 
{

    List<WorksStatsVO> selectWorksWithStatsByAuthorId(Integer authorId);
    List<WorksStatsVO> selectAllWorksWithStats();

    /**
     * 查询作品详情
     * 
     * @param workId 作品详情主键
     * @return 作品详情
     */
    public Works selectWorksByWorkId(Integer workId);

    /**
     * 查询作品详情列表
     * 
     * @param works 作品详情
     * @return 作品详情集合
     */
    public List<Works> selectWorksList(Works works);

    /**
     * 新增作品详情
     * 
     * @param works 作品详情
     * @return 结果
     */
    public int insertWorks(Works works);

    /**
     * 修改作品详情
     * 
     * @param works 作品详情
     * @return 结果
     */
    public int updateWorks(Works works);

    /**
     * 删除作品详情
     * 
     * @param workId 作品详情主键
     * @return 结果
     */
    public int deleteWorksByWorkId(Integer workId);

    /**
     * 批量删除作品详情
     * 
     * @param workIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteWorksByWorkIds(Integer[] workIds);

    // 积分流水相关方法
    
    /**
     * 查询互动评论积分规则
     * 
     * @return 积分规则
     */
    public Map<String, Object> selectInteractionCommentRule();
    
    /**
     * 备用查询：使用LIKE查询互动评论积分规则
     * 
     * @return 积分规则
     */
    public Map<String, Object> selectInteractionCommentRuleLike();
    
    /**
     * 备用查询2：使用TRIM去除空格查询互动评论积分规则
     * 
     * @return 积分规则
     */
    public Map<String, Object> selectInteractionCommentRuleTrim();
    
    /**
     * 备用查询3：直接通过ID查询积分规则
     * 
     * @param ruleId 规则ID
     * @return 积分规则
     */
    public Map<String, Object> selectPointRuleById(Long ruleId);
    
    /**
     * 查询用户当前积分
     * 
     * @param userId 用户ID
     * @return 用户当前积分
     */
    public Object selectUserTotalPoint(Long userId);
    
    /**
     * 插入积分流水记录
     * 
     * @param params 积分流水参数
     * @return 结果
     */
    public int insertPointFlow(Map<String, Object> params);
    
    /**
     * 更新用户积分
     * 
     * @param params 更新参数
     * @return 结果
     */
    public int updateUserTotalPoint(Map<String, Object> params);
    
    /**
     * 调试：查询所有有效的积分规则
     * 
     * @return 积分规则列表
     */
    public List<Map<String, Object>> selectAllValidPointRules();
}
